package com.hemerasolutions.v2trainer.component.interfaces.detail;

import java.util.List;

import javax.faces.event.ActionEvent;
import javax.faces.event.AjaxBehaviorEvent;
import javax.faces.event.ValueChangeEvent;

import com.hemerasolutions.v2trainer.component.interfaces.BaseComponentInterface;
import com.hemerasolutions.v2trainer.component.interfaces.list.StepListCompInterface;
import com.hemerasolutions.v2trainer.model.exercise.executions.Execution;
import com.hemerasolutions.v2trainer.model.exercise.intensity.IntensityModZone;
import com.hemerasolutions.v2trainer.model.exercise.intensity.IntensityZone;
import com.hemerasolutions.v2trainer.model.modality.Modality;
import com.hemerasolutions.v2trainer.model.step.Step;
import com.hemerasolutions.v2trainer.model.training.TrainingType;
import com.hemerasolutions.v2trainer.model.unit.volume.VolumeFactor;
import com.hemerasolutions.v2trainer.model.unit.volume.VolumeType;

public interface StepCompInterface extends BaseComponentInterface {

	public abstract void setExerciseVolumeFactors(List<VolumeFactor> exerciseVolumeFactors);

	public abstract List<VolumeFactor> getExerciseVolumeFactors();

	public abstract void setExerciseVolumeTypes(List<VolumeType> exerciseVolumeTypes);

	public abstract List<VolumeType> getExerciseVolumeTypes();

	public abstract void setExerciseIntensityZones(List<IntensityZone> exerciseIntensityZones);

	public abstract List<IntensityZone> getExerciseIntensityZones();

	public abstract void setTemplateVolumeFactors(List<VolumeFactor> templateVolumeFactors);

	public abstract List<VolumeFactor> getTemplateVolumeFactors();

	public abstract void setTemplateIntensityModZones(List<IntensityModZone> templateIntensityModZones);

	public abstract List<IntensityModZone> getTemplateIntensityModZones();

	public abstract void setTemplateVolumeTypes(List<VolumeType> templateVolumeTypes);

	public abstract List<VolumeType> getTemplateVolumeTypes();

	public abstract void setTemplateExecutions(List<Execution> templateExecutions);

	public abstract List<Execution> getTemplateExecutions();

	public abstract void setTemplateModalitys(List<Modality> templateModalitys);

	public abstract List<Modality> getTemplateModalitys();

	public abstract void setTemplateTrainingTypes(List<TrainingType> templateTrainingTypes);

	public abstract List<TrainingType> getTemplateTrainingTypes();

	public abstract void setParentPanelHandler(StepListCompInterface parentPanelHandler);

	public abstract StepListCompInterface getParentPanelHandler();

	public abstract void setStep(Step step);

	public abstract Step getStep();

	public abstract void setVariations(List<String> variations);

	public abstract List<String> getVariations();

	public abstract void fillTemplateVolumeFactors();

	public abstract void fillExerciseVolumeFactors();

	public abstract void fillTemplateVolumeTypes();

	public abstract void fillExerciseVolumeTypes();

	public abstract void fillTemplateIntensityModZones();

	public abstract void fillExerciseIntensityZones();

	public abstract void fillTemplateExecutions();

	public abstract void fillTemplateModalitys();

	public abstract void fillTemplateTrainingTypes();

	public abstract void changeVolumeFactor();

	public abstract void changeVolumeType();

	public abstract void changeTemplateExecution();

	public abstract void changeTemplateModality();

	public abstract void changeTemplateTrainingType();

	public abstract void changeExerciseVolumeType();

	public abstract void changeExerciseIntensityLevel();

	public abstract void changeExerciseExecution();

	public abstract void loadStep();

	public abstract void refresh();

	public abstract void deleteStep(ActionEvent ev);

	public abstract void toggleStep(ActionEvent ev);

	public abstract	void updateParentWorkout(ActionEvent ev);

	public abstract	void updateParentWorkout(AjaxBehaviorEvent ev);

	public abstract void calendarChangeListener(ValueChangeEvent e);

	public abstract	List<Execution> getEgExecutions();

	public abstract	void setEgExecutions(List<Execution> egExecutions);

	public abstract	List<VolumeType> getEgVolumeTypes();

	public abstract	void setEgVolumeTypes(List<VolumeType> egVolumeTypes);

	public abstract	List<IntensityModZone> getEgIntensityModZones();

	public abstract	void setEgIntensityModZones(List<IntensityModZone> egIntensityModZones);

	public abstract	List<VolumeFactor> getEgVolumeFactors();

	public abstract	void setEgVolumeFactors(List<VolumeFactor> egVolumeFactors);

	public abstract	void fillEgExecutions();

	public abstract	void fillEgIntensityModZones();

	public abstract	void fillEgVolumeFactors();

	public abstract	void fillEgVolumeTypes();

	public abstract	void changeEgExecution();

	public abstract	void changeEgVolumeType();

	public abstract	void changeEgImz();

	public abstract	void toViewIz();

	public abstract	void toViewImz();

	void changeStep();

}
